package com.befiv.lock.annotation;

import lombok.NonNull;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @Author: Gjq
 * @Date: 2019/6/28 0028 上午 9:40
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Lock {
    /**
     * 锁的key值
     * @return
     */
    @NonNull String value();

    /**
     *自动释放锁的时间
     * 该时间一定要大于业务执行的时间
     * 单位 (秒)
     * @return
     */
    long expire() default 10;

    /**
     * 获取锁的超时时间
     * 单位 (秒)
     * @return
     */
    long timeout() default 10;
}
